FPGA археологія

Це стаття про репліки FPGA ретро-комп'ютерів 70-х і 80-х років 20 століття. Дослідження архаїчних систем називається комп'ютерною археологією. Головна проблема колекціонування побутової електроніки того часу — це ветхість обладнання. Конденсатори здуваються, пливуть стародавні РК-дисплеї, окислюються контакти, перестає працювати практично все. Софтверні емулятори (зазвичай розташовані на базі Raspberry Pie) не достатньою мірою надихають колекціонерів, які хочуть володіти повною реплікою стародавнього мікропроцесора, нехай навіть у вигляді VHDL. Тому заслужену популярність викликали проекти за створенням SoC (повні репліки не тільки процесора, але й його периферії, сумісної з сучасними моніторами, клавіатурами та мишами) для процесорів FPGA (Altera, Xilinx, Intel), які реалізують популярні ігрові платформи демосцени минулого.

У якості прикладу, які процесори входять в мою сферу інтересів, як колекціонера, я б привів наступні платформи: Apple II/ПРАВЕЦ-8, Sega, NES, Atari 2600/800XL/ST, MSX2+/КУВТ2, C64, ZX, 8085, HC08, HC016, PDP-11/БК-0010. Тут же, в статті хочу розповісти про один іспанський магазин стародавніх реплік на FPGA та інших проектах, які я б рекомендував як напрямки або продукти, для яких існує багато програм, і навіть деякі актуальні проекти ентузіастів. Я помацав трохи — старі пердуни ще не вмерли і паяють все для дітей, щоб, по-перше, мали можливість вчити електроніку по дідівським лекалам, а по-друге, отримали чудовий освітній інструмент зі своїм мінімалістичним середовищем розробки для 8-бітних і 16-бітних бітних процесорів, який покриває максимальну кількість платформ для експериментів. Рекомендую такий практичний курс з електроніки українських для шкіл, 9-11 класів. Просто на першому курсі вже пора напряму керувати контролером NVMe з юзерленду, тому можна було б і з 5-го начати, краще з цим не затягувати.

Так, я хочу розповісти про свою колекцію FPGA-репліків ретро-комп'ютерів: 32-бітний Atari Falcon, 8-бітний Commodore C64, 16-бітний SEGA Genesis, 16-бітний DEC PDP-11/70, MSX-комп'ютер Sony HB-F1XV HitBit MSX2+, легендарний Sinclair Research ZX Spectrum 48K+ (в порядку зменшення ціни); що знаходяться у відкритому доступі для прошивки чіпів FPGA, для яких створюються плати, які можна купити та замовити. Тиражі колекційні, як і весь ретро-комп'ютер. Відновлення цієї колекції вам обійдеться в тисячі євро.

ZX Spectrum 48K+ на ZX UNO XL

ZX - це справжній народний простий комп'ютер, який кожен міг спаяти самостійно, його схеми ходили в журналах, на відміну від Японії, Іспанії, де переважали більш потужні версії MSX з графічним відеопроцесором VDP, ZX був розповсюджений в іншій Європі. Це самий простий комп'ютер, приблизно рівня Apple II. Навіть Commodore C64/6502 вважався просунутою мультимедійною платформою, у відмінності від більш народної ZX/Z80. Цей процесор настільно народний, що довго ставився ще в клавіатурі, калькуляторах, телефонах і ставиться до цих пор. Аналоги за номенклатурою Intel — це 8080, 8085.

Що сказати, любителям спартанської платформи ZX повезло, у них існує культова плата ZX UNO XL (Issue 4) (випуск 4) на Xilinx Spartan XC6SLX9 вартістю всього 100 євро, яка крім самої платформи ZX Spectrum 48K підтримує також Sam Coupe, Jupiter ACE, Apple II, VIC 20, Sega Master System, NES, Atari 800XL, MSX1, C64 і ще парочку. Такий багатий набір емульованих платформ ставить цю плату в топ огляду. Більше того ця плата підходить в оригінальний корпус ZX Spectrum 48K — я думаю, це максимальний подарунок.

Sony HB-F1XV MSX2+ на SX-1

Перший MSX Yamaha я побачив в Кам'янці-Подільському, в педагогічному університеті. У місті був завод Електроніка всесоюзного значення, тому діти працюючих там інженерів цікавилися комп'ютерами. У місті були Sony і КУВТ2 версії MSX. Були комп'ютерні клуби, у дворі у двох були самозібрані ZX спектруми, у мене був Atari 800XE (7-й клас), в клубах були корвети з сервером на БК. В школі вчителі писали самопальні мережеві протоколи. Всі клони геймбоїв можна було купити чи не в магазині, де продавали спінінги. Про архитектуру MSX мені вперше розповідали в 9-му класі, коли у мене вже був 486. З 4-го класу у нас прямо в домашньому класі стояв ряд ПРАВЕЦ-8, а починаючи з 5-го був допуск до класу IBM PC/AT 286. (В основному мене цікавили F1, Prince of Persia, LHX, Turbo Pascal 5.5).

Спектрумівські іграшки ZX не були такими просунутими, як MSX із-за наявності апаратного графічного сопроцесора на платформі MSX, що перетворило його в реальну двопроцесорну консоль. Графічний процесор VDP умів рендерити лінії алгоритмом Брезенхема, робити біт-бліттинг, вертикальні та горизонтальні копії та скани та інші штуки. MSX — це один з японських стандартів на комп'ютери, такий як PC, який став IBM PC/XT або стандарт на ОС реального часу TRON. Yamaha, Panasonic, Sony, Philips, все це на eBay коштує від 500 доларів. Konami Metal Gear Solid вперше був написаний для MSX. Не знаю, що робили ігрові консолі КУВТ2 в університетах, але саме там мій учитель програмування навчився писати іграшки, так як в Microsoft BASIC-MSX, які за стандартом були прошиті в кожному ПЗУ, є механізм колізії спрайтів і апаратний бітблітінг і управління спрайтами. Писати іграшки было простіше. Моя улюблена гра на Atari, MSX і Z80 — це Montezuma's Revenge, доступна в емуляторі webmsx.org.

Команди Yamaha VDP-V9938
КомандаОписРегістри
HMMCFill VRAM From CPU36-46
YMMMFast Copy (Y axis)34-39,42-26
HMMMFast Copy32-46
HMMVFill36-46
LMMCLogical Fill VRAM From CPU36-46
LMCMLogical transfer data to CPU32-35,40-46
LMMMLogical Vram to VRAM32-46
LMMVLogical Fill36-46
LINELine36-46
SRCHSearch (X axis)32-36,44-46
PSETPset36-39,44-46
POINTRead Point32-36,44-46
STOPAsync Cancel46
Формат команди VDP-V9938
CMDARGCOLORNUM-YNUM-XDST-YDST-XSRC-YSRC-X
46454442-4340-4138-3936-3734-3532-33

З 2000 року один німець розробляє операційну систему SymbOS для всіх 8-розрядних платформ, в тому числі і для MSX, зауважте, що він почав це після смерті платформи і робить до цих пор. Якщо порівняти SymbOS з Atari TOS, DeskView, Windows 1 або навіть з Palm, то цілком нічого, є WGET, NETSTAT! Усі наркомани, які до цих пор на цьому пишуть, понятна справа живуть у Нідерландах http://map.grauw.nl/articles/. ОС можна прямо зараз запустити в емуляторі WebMSX по прямому посиланню https://webmsx.org/symbos/. Компілятор Small Device C прекрасно можна використовувати для створення ОС, рантаймів і своїх бібліотек для MSX/Z80, але багато хто пише на чистому асемблері, яких теж є кілька. На цій платформі існують dBase II, Turbo Pascal 3.0, CP/M, кілька DOS-ов і файлових менеджерів. В якості єдиного ресурсу з програмування ретропроцесорів я рекомендую assemblytutorial.com.

У якості репліки FPGA MSX я вибрав собі материнську плату SX-1 формату Mini-ITX з чіпом FPGA Altera, які виробляють іспанці з 8bit4ever. Працює з PS/2 і USB клавами, SD, картриджами, VHD фірмовими відкритими соурсами. Вартість 130 євро.

DEC PDP-11/70 на Arty A7

На жаль бренда, який би просував культовий PDP-11/70 немає. Роблять якісь діти іграшки на Raspberry Pie, але як ми вже відзначили, повного задоволення така система не принесе. Тому в даному випадку ми будемо розглядати плату Digilent Arty A7 на базі процесора FPGA XC7A35 ($130) або XC7A100 ($250), яка сумісна з відкритою версією VHDL PDP-11/70 github.com/wfjm/w11. VHDL реалізує майже всю периферію (крім FPU) — це дозволяє запускати перші UNIX: System V і 2.11BSD, а також оригінальні операційні системи DEC: RT-11 і RSX-11M. Для цих систем були написані перші компілятори С, і колонкова БД MUMPS, яка отримала стандарт ISO. Існували радянські клони PDP-11 БК-0010, клон RT-11 ОС ДЕМОС і клон MUMPS системи ДІАМС.

Не варто думати, що наявність UNIX допоможе розвернутися, це не сучасний Ubuntu, в 16-бітній системі середовище буде спартанським і нагадувало організацію 8-бітної системи. Зато побачите, як старі працювали.

Для любителів мінімалізму існує PDP-11/70 на Intel Cyclone:

SEGA Genesis на Mega Sg

Бідна SEGA пережила кілька фейлів перед ставшими легендарними SEGA MegaDrive/Genesis, які запущені в FPGA компанії Analogue. Так у 1983 році SEGA вийшла з SG-1000, в той же день, що і набагато потужніша NES (Маріо, Донкі Конг). У 1986 році SEGA випустила Master System, тоді як у Nintendo вже був Super Mario. У підсумку SEGA вирішила повністю запустити Genesis на 16-бітній платформі: пам'ять, процесор, відео. У Genesis були такі іграшки, як Mortal Kombat (1992), Sonic The Hedgehog (1991), Super Monaco GP (1991), Street Figher (1992), Dune: The Battle For Arrakis (1994), Lemmings (1992), Flashback: The Quest for Identity (1993), Virtua Racing (1994). У 1994 році SEGA вдалося зняти продажі з Nintendo. SEGA Dreamcast на SH-4 була третім і останнім фейлом SEGA.

Commodore C64 на Mega65

C65 — це оновлена версія Commodore 64, яка з'явилася на закате і не встигла вийти на ринок. Museum of Electronic Games & Art зібрав достатню кількість коштів і вже доступні замовлення на дорогі ($1K) набори для розробників (DevKit) створення в FPGA не тільки C64, але і невипущеного C65. У скорому часі вернеться в очікування запуску споживчого продукту. Документація в TeX, добре документована структура VHDL моделі — все на GitHub, відмінний сайт — mega65.org. Сама платформа MEGA65 передбачає подальшу підтримку ATARI ST і AMIGA.

Atari Falcon на FireBee

Класичні 8-бітні Atari були побудовані на процесорі MOS 6502, як і Commodore 64, Apple II і її болгарський клон ПРАВЕЦ-8. Атарі воювала в цей час на ринку з Commodore, який постачав чіпи для калькуляторів, і з 1981 по 1983 скинула ціну на серію 800 майже в 9 разів. У 1985 році Atari перейшла на 32-бітні процесори Motorola 68K і платформу Atari ST. Atari Falcon — це апогей цієї платформи, використаної в Atari FireBee на базі процесора Motorola Coldfire 264MHz. Хоча центральний процесор не емулюється, на платі розміщена FPGA Altera Cyclone за допомогою якої емулюється оригінальна периферія Atari.

Плата FPGA FireBee (560 євро) підтримує майже всі ОС, які існують для Atari ST, і ще їх докидує: MultiTOS, MagiC, EmuTOS, Atari TOS, Geneva; а також графічні середовища: GEM, XaAES, FreeMiNT.